﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;
using Sispe.Repository;
using Microsoft.Practices.Unity;

namespace Sispe.BussinesLogic
{
    public class TareoBL : ITareoBL
    {
        [Dependency]
        public ITareoRepository tareoRepo { get; set; }

        public void AddTareoBorrador(TAREO_BORRADOR tareoBorrador)
        {
            var existe = tareoRepo.RegistroDuplicado(tareoBorrador);
            if (!existe)
            {
                tareoRepo.AddTareoBorrador(tareoBorrador);
            }            
        }

        public void UpdateTareoBorrador(TAREO_BORRADOR tareoBorrador)
        {
            tareoRepo.UpdateTareoBorrador(tareoBorrador);
        }

        public void DeleteTareoBorrador(int Id)
        {
            tareoRepo.DeleteTareoBorrador(Id);
        }
        
        public List<TAREO_BORRADOR> GetAllFromTareoBorrador()
        {
            return tareoRepo.GetAllFromTareoBorrador();
        }


        public List<TAREO_BORRADOR> TareoByDni(TAREO_BORRADOR tareoBorrador)
        {
            return tareoRepo.TareoByDni(tareoBorrador);
        }


        public void AddTareo(TAREO tareo)
        {
            var msg = "";
            var ok = tareo.Validate(out msg);
            if (ok)
            {
                tareoRepo.AddTareo(tareo);
            }
            else
            {
                throw new Exception(msg);
            }
        }

        public void UpdateTareo(TAREO tareo)
        {
            var msg = "";
            var ok = tareo.Validate(out msg);
            if (ok)
            {
                tareoRepo.UpdateTareo(tareo);
            }
            else
            {
                throw new Exception(msg);
            }
        }

        public List<TAREO> GetAllFromTareo()
        {
            return tareoRepo.GetAllFromTareo();
        }


        public List<TAREO_BORRADOR> ListaTareo(TAREO_BORRADOR tareoBorrador)
        {
            return tareoRepo.ListaTareo(tareoBorrador);
        }


        public List<TAREO_BORRADOR> GetAllFromTareoBorradorByDni(string Dni)
        {
            return tareoRepo.GetAllFromTareoBorradorByDni(Dni);
        }


        public TAREO_BORRADOR GetAllFromTareoBorradorById(int id)
        {
            return tareoRepo.GetAllFromTareoBorradorById(id);
        }


        public void UpdateTareoBorradorSQL(TAREO_BORRADOR tareo, string dni)
        {
            tareoRepo.UpdateTareoBorradorSQL(tareo, dni);
        }


        public List<TAREO> GetAllFromTareoByNombresFechas(string criterio, int opc, DateTime fecha)
        {
            return tareoRepo.GetAllFromTareoByNombresFechas(criterio, opc, fecha);
        }


        public TAREO GetTareoFromIdTareo(int idTareo)
        {
            return tareoRepo.GetTareoFromIdTareo(idTareo);
        }
    }
}
